Node.js Express.js

ওয়েব অ্যাপ্লিকেশন এবং API তৈরি করতে Node.js-এর সবচেয়ে জনপ্রিয় ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক শিখুন

Express.js কি?

Express.js ( Express) API Node.js .

এটিকে প্রায়ই Node.js-এর জন্য ডি ফ্যাক্টো স্ট্যান্ডার্ড সার্ভার ফ্রেমওয়ার্ক বলা হয়।

মূল বৈশিষ্ট্য:

ন্যূনতম এবং নমনীয়

শুধুমাত্র মৌলিক বৈশিষ্ট্য প্রদান করে

কোন মন্তব্য নেই

আপনি আপনার আবেদন গঠন কিভাবে সিদ্ধান্ত

হালকা এবং দ্রুত

নিম্ন ওভারহেড এবং উচ্চ গতি কর্মক্ষমতা

মিডলওয়্যারের মাধ্যমে এক্সটেনসিবল

মিডলওয়্যার ফাংশনের মাধ্যমে কার্যকারিতা প্রসারিত করুন

দারুণ পরিবেশ

প্লাগইন এবং এক্সটেনশনের বিশাল ইকোসিস্টেম

কেন Express.js বেছে নিন?

এক্সপ্রেস Node.js বৈশিষ্ট্যগুলিকে মাস্ক না করে মৌলিক ওয়েব অ্যাপ্লিকেশন বৈশিষ্ট্যগুলির একটি পাতলা স্তর সরবরাহ করে।

এটি প্রদান করে:

এক্সপ্রেস দিয়ে শুরু করা

এক্সপ্রেস যে কোনো Node.js প্রকল্পে যোগ করা যেতে পারে। একটি নতুন এক্সপ্রেস অ্যাপ কীভাবে শুরু করবেন তা এখানে।

পূর্বশর্ত

আপনি শুরু করার আগে, নিশ্চিত করুন যে আপনার আছে:

এক্সপ্রেস ইনস্টল করা হচ্ছে

আপনার Node.js অ্যাপ্লিকেশনে এক্সপ্রেস ব্যবহার করতে, আপনাকে প্রথমে এটি ইনস্টল করতে হবে:

npm install express

এক্সপ্রেস ইনস্টল করুন এবং আপনার package.json নির্ভরতায় এটি সংরক্ষণ করুন:

npm install express --save

হ্যালো ওয়ার্ল্ড উদাহরণ

আসুন এক্সপ্রেসের সাথে একটি সাধারণ "হ্যালো ওয়ার্ল্ড" অ্যাপ্লিকেশন তৈরি করি।

এই উদাহরণটি একটি এক্সপ্রেস অ্যাপ্লিকেশনের মৌলিক কাঠামো প্রদর্শন করে।

মূল উপাদান:

const express = require('express');
const app = express();
const port = 8080;

// Define a route for GET requests to the root URL
app.get('/', (req, res) => {
  res.send('Hello World from Express!');
});

// Start the server
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

এই কোডটি app.js নামে একটি ফাইলে সংরক্ষণ করুন এবং Node.js দিয়ে চালান:

node app.js

তারপর, আপনার ব্রাউজার খুলুন এবং http://localhost:8080 এ যান এবং "হ্যালো ওয়ার্ল্ড" বার্তাটি দেখুন।

মৌলিক রাউটিং

রাউটিং বলতে বোঝায় কিভাবে একটি অ্যাপ্লিকেশন বিভিন্ন HTTP পদ্ধতি (GET, POST, PUT, DELETE, ইত্যাদি) ব্যবহার করে নির্দিষ্ট এন্ডপয়েন্ট (URI) তে ক্লায়েন্টের অনুরোধে সাড়া দেয়।

এক্সপ্রেস HTTP পদ্ধতির সাথে যুক্ত রুট সংজ্ঞায়িত করার জন্য সহজ পদ্ধতি প্রদান করে:

const express = require('express');
const app = express();
const port = 8080;

// Respond to GET request on the root route
app.get('/', (req, res) => {
  res.send('GET request to the homepage');
});

// Respond to POST request on the root route
app.post('/', (req, res) => {
  res.send('POST request to the homepage');
});

// Respond to GET request on the /about route
app.get('/about', (req, res) => {
  res.send('About page');
});

// Catch all other routes
app.all('*', (req, res) => {
  res.status(404).send('404 - Page not found');
});

// Start the server
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

মূল পরামিতি

রুট প্যারামিটারের নাম দেওয়া হয় URL সেগমেন্ট যা URL-এর নির্দিষ্ট অবস্থানে মান ধরে রাখে।

এগুলি একটি কোলন দিয়ে নির্দিষ্ট করা হয়েছে: পথের উপসর্গ।

উদাহরণ: /users/:userId/books/:bookId

এই উদাহরণে, userId এবং bookId হল রুট প্যারামিটার req.params এর মাধ্যমে অ্যাক্সেসযোগ্য।

const express = require('express');
const app = express();
const port = 8080;

// Route with parameters
app.get('/users/:userId/books/:bookId', (req, res) => {
  // Access parameters using req.params
  res.send(`User ID: ${req.params.userId}, Book ID: ${req.params.bookId}`);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

ক্যোয়ারী প্যারামিটার

একটি URL এ প্যারামিটার কোয়েরি? কী-মানের জোড়া যা পরে প্রদর্শিত হয়

এগুলি স্বয়ংক্রিয়ভাবে এক্সপ্রেস দ্বারা পার্স করা হয় এবং req.query-এ উপলব্ধ৷

উদাহরণ URL: http://example.com/search?q=express&page=2

এই URL-এ, q=express এবং page=2 হল ক্যোয়ারী প্যারামিটার যা req.query.q এবং req.query.page হিসাবে অ্যাক্সেসযোগ্য।

const express = require('express');
const app = express();
const port = 8080;

// Route handling query parameters
app.get('/search', (req, res) => {
  // Access query parameters using req.query
  const { q, category } = req.query;
  res.send(`Search query: ${q}, Category: ${category || 'none'}`);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

এই মত একটি URL দিয়ে এই রুট অ্যাক্সেস করুন: http://localhost:8080/search?q=express&category=framework

এক্সপ্রেস মধ্যে মিডলওয়্যার

মিডলওয়্যার ফাংশন হল এক্সপ্রেস অ্যাপ্লিকেশনগুলির মেরুদণ্ড।

তাদের অ্যাক্সেস আছে:

মিডলওয়্যার করতে পারে:

অন্তর্নির্মিত মিডলওয়্যার

এক্সপ্রেস বেশ কয়েকটি দরকারী মিডলওয়্যার ফাংশন অন্তর্ভুক্ত করে:

const express = require('express');
const app = express();
const port = 8080;

// Middleware to parse JSON request bodies
app.use(express.json());

// Middleware to parse URL-encoded request bodies
app.use(express.urlencoded({ extended: true }));

// Middleware to serve static files from a directory
app.use(express.static('public'));


// POST route that uses JSON middleware
app.post('/api/users', (req, res) => {
  // req.body contains the parsed JSON data
  console.log(req.body);
  res.status(201).json({ message: 'User created', user: req.body });
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

এক্সপ্রেস এ সমস্যা হ্যান্ডলিং

এক্সপ্রেসে ত্রুটি হ্যান্ডলিং চারটি আর্গুমেন্ট সহ বিশেষ মিডলওয়্যার ফাংশনের মাধ্যমে করা হয়:

(err, req, res, next).

মূল পয়েন্ট:

এক্সপ্রেস অনুরোধ প্রক্রিয়াকরণের সময় ত্রুটিগুলি ধরতে একটি ডিফল্ট ত্রুটি হ্যান্ডলারের সাথে আসে:

const express = require('express');
const app = express();
const port = 8080;

// Route that may throw an error
app.get('/error', (req, res) => {
  // Simulating an error
  throw new Error('Something went wrong!');
});

// Route that uses next(error) for asynchronous code
app.get('/async-error', (req, res, next) => {
  // Simulating an asynchronous operation that fails
  setTimeout(() => {
    try {
      // Something that might fail
      const result = nonExistentFunction(); // This will throw an error
      res.send(result);
    }
    catch (error) {
      next(error); // Pass errors to Express
    }
    }, 100);
});

// Custom error handling middleware
// Must have four parameters to be recognized as an error handler
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

স্ট্যাটিক ফাইল পরিবেশন করা

এক্সপ্রেস বিল্ট-ইন express.static মিডলওয়্যার ব্যবহার করে স্ট্যাটিক ফাইল যেমন ইমেজ, CSS এবং জাভাস্ক্রিপ্ট পরিবেশন করতে পারে।

সর্বোত্তম অনুশীলন:

চিত্র, CSS ফাইল এবং জাভাস্ক্রিপ্ট ফাইলের মতো স্ট্যাটিক ফাইল পরিবেশন করতে বিল্ট-ইন express.static মিডলওয়্যার ফাংশন ব্যবহার করুন:

const express = require('express');
const path = require('path');
const app = express();
const port = 8080;

// Serve static files from the 'public' directory
app.use(express.static('public'));

// You can also specify a virtual path prefix
app.use('/static', express.static('public'));

// Using absolute path (recommended)
app.use('/assets', express.static(path.join(__dirname, 'public')));

app.get('/', (req, res) => {
  res.send(`
    

Static Files Example

Logo `); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });

এটি ধরে নেয় যে আপনার স্ক্রিপ্টের মতো একই ডিরেক্টরিতে চিত্র, CSS এবং জাভাস্ক্রিপ্ট ফাইলগুলির জন্য সাবডিরেক্টরি সহ সর্বজনীন নামে একটি ডিরেক্টরি রয়েছে৷

পৃথক ফাইলে রুট করা

একটি ভাল সেটআপের জন্য, পৃথক ফাইলগুলিতে রুটগুলি সংজ্ঞায়িত করতে এক্সপ্রেস রাউটার ব্যবহার করুন:

routes/users.js

const express = require('express');
const router = express.Router();

// Middleware specific to this router
router.use((req, res, next) => {
  console.log('Users Router Time:', Date.now());
  next();
});

// Define routes
router.get('/', (req, res) => {
  res.send('Users home page');
});

router.get('/:id', (req, res) => {
  res.send(`User profile for ID: ${req.params.id}`);
});

module.exports = router;

routes/products.js

const express = require('express');
const router = express.Router();

// Define routes
router.get('/', (req, res) => {
  res.send('Products list');
});

router.get('/:id', (req, res) => {
  res.send(`Product details for ID: ${req.params.id}`);
});

module.exports = router;

app.js (প্রধান ফাইল)

const express = require('express');
const usersRouter = require('./routes/users');
const productsRouter = require('./routes/products');

const app = express();
const port = 8080;

// Use the routers
app.use('/users', usersRouter);
app.use('/products', productsRouter);

app.get('/', (req, res) => {
  res.send('Main application home page');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

টেমপ্লেট ইঞ্জিন

এক্সপ্রেস ডায়নামিক এইচটিএমএল তৈরি করতে টেমপ্লেট ইঞ্জিনগুলির সাথে কনফিগার করা যেতে পারে:

const express = require('express');
const app = express();
const port = 8080;

// Set the view engine to EJS
app.set('view engine', 'ejs');

// Set the directory where templates are located
app.set('views', './views');

// Route that renders a template
app.get('/', (req, res) => {
  const data = {
    title: 'Express Template Example',
    message: 'Hello from EJS!',
    items: ['Item 1', 'Item 2', 'Item 3']
  };

  // Renders the views/index.ejs template
  res.render('index', data);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

এই উদাহরণটি ব্যবহার করার জন্য, আপনাকে EJS টেমপ্লেট ইঞ্জিন ইনস্টল করতে হবে:

npm install ejs

এবং views/index.ejs এ একটি ফাইল তৈরি করুন:

<!DOCTYPE html>
<html>
<head>
  <title><%= title %></title>
</head>
<body>
  <h1><%= title %></h1>
  <p><%= message %></p>

  <h2>Items:</h2>
  <ul>
    <% items.forEach(function(item) { %>
      <li><%= item %></li>
    < % }); %>
  </ul>
</body>
</html>

এক্সপ্রেস অ্যাপ্লিকেশন জেনারেটর

এক্সপ্রেস অ্যাপ্লিকেশন জেনারেটর হল একটি টুল যা আপনাকে দ্রুত একটি এক্সপ্রেস অ্যাপ্লিকেশন কঙ্কাল তৈরি করতে সাহায্য করে।

মূল বৈশিষ্ট্য:

ইনস্টলেশন: npm install -g express-generator

ব্যবহার: express --view=pug myapp

এক্সপ্রেস একটি অ্যাপ্লিকেশন জেনারেটর সরঞ্জাম সরবরাহ করে যা আপনাকে দ্রুত একটি অ্যাপ্লিকেশন কঙ্কাল তৈরি করতে সহায়তা করে:

# Install the generator globally
npm install -g express-generator

# Create a new Express application
express --view=ejs myapp

# Navigate to the app directory
cd myapp

# Install dependencies
npm install

# Start the app
npm start

এটি নিম্নলিখিত ডিরেক্টরি কাঠামোর সাথে একটি অ্যাপ্লিকেশন তৈরি করে:

myapp/
├── app.js
├── bin/
│  └── www
├── package.json
├── public/
│  ├── images/
│  ├── javascripts/
│  └── stylesheets/
│    └── style.css
├── routes/
│  ├── index.js
│  └── users.js
└── views/
  ├── error.ejs
  └── index.ejs

Express.js সেরা অভ্যাস

শক্তিশালী, রক্ষণাবেক্ষণযোগ্য এক্সপ্রেস অ্যাপ্লিকেশন তৈরি করতে এই সেরা অনুশীলনগুলি অনুসরণ করুন:

প্রকল্প কাঠামো

বৈশিষ্ট্য বা উপাদান দ্বারা আপনার কোড সংগঠিত

পরিবেশ পরিবর্তনশীল

কনফিগারেশনের জন্য dotenv ব্যবহার করুন

ত্রুটি হ্যান্ডলিং

সেন্ট্রালাইজ ত্রুটি হ্যান্ডলিং

লগিং

মরগান বা উইনস্টনের মতো একটি লগিং লাইব্রেরি ব্যবহার করুন

নিরাপত্তা

নিরাপত্তার সর্বোত্তম অনুশীলনগুলি প্রয়োগ করুন (হেলমেট, হার সীমা, ইত্যাদি)

যাচাইকরণ

এক্সপ্রেস-ভ্যালিডেটরের মতো লাইব্রেরি ব্যবহার করে ইনপুট যাচাই করুন

নিরাপত্তা সেরা অনুশীলন

হেলমেট ব্যবহার করুন- বিভিন্ন HTTP হেডার সেট করে আপনার এক্সপ্রেস অ্যাপ্লিকেশনগুলিকে সুরক্ষিত করুন৷
কনফিগারেশনের জন্য পরিবেশ ভেরিয়েবল ব্যবহার করুন
সঠিক ত্রুটি হ্যান্ডলিং বাস্তবায়ন
উৎপাদনে HTTPS ব্যবহার করুন
ইনজেকশন আক্রমণ প্রতিরোধ করতে ব্যবহারকারীর ইনপুট যাচাই করুন
উপযুক্ত CORS নীতি সেট করুন
const express = require('express');
const helmet = require('helmet');
const cors = require('cors');
const app = express();

// Security middleware
app.use(helmet());

// CORS configuration
app.use(cors({
  origin: 'https://example.com',
  methods: ['GET', 'POST'],
  allowedHeaders: ['Content-Type', 'Authorization']
}));

// Other middleware and routes
// ...

অনুশীলন করুন

Express.js ?

Node.js
✗ ভুল! Express.js একটি ডাটাবেস সিস্টেম নয়
Node.js
✓ ঠিক আছে! Express.js হল Node.js-এর জন্য সবচেয়ে জনপ্রিয় ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
একটি জাভাস্ক্রিপ্ট রানটাইম পরিবেশ
✗ ভুল! জাভাস্ক্রিপ্ট রানটাইম পরিবেশ হল Node.js, Express.js নয়
Node.js
✗ ভুল! Express.js একটি টেস্টিং ফ্রেমওয়ার্ক নয়, এটি একটি ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক